/**
 * ctrl + window + I
 * @Author       : huangdandan
 * @Date         : 2025-09-11 14:48:25
 * @LastEditors  : huangdandan
 * @LastEditTime : 2025-09-12 11:04:40
 * @Description  : 请填写简介
 */
/*
 *
 * 　　┏┓　　　┏┓+ +
 * 　┏┛┻━━━┛┻┓ + +
 * 　┃　　　　　　　┃
 * 　┃　　　━　　　┃ ++ + + +
 *  ████━████ ┃+
 * 　┃　　　　　　　┃ +
 * 　┃　　　┻　　　┃
 * 　┃　　　　　　　┃ + +
 * 　┗━┓　　　┏━┛
 * 　　　┃　　　┃
 * 　　　┃　　　┃ + + + +
 * 　　　┃　　　┃
 * 　　　┃　　　┃ +  神兽保佑
 * 　　　┃　　　┃    代码无bug
 * 　　　┃　　　┃　　+
 * 　　　┃　 　　┗━━━┓ + +
 * 　　　┃ 　　　　　　　┣┓
 * 　　　┃ 　　　　　　　┏┛
 * 　　　┗┓┓┏━┳┓┏┛ + + + +
 * 　　　　┃┫┫　┃┫┫
 * 　　　　┗┻┛　┗┻┛+ + + +
 *
 */

/*
 *                        _oo0oo_
 *                       o8888888o
 *                       88" . "88
 *                       (| -_- |)
 *                       0\  =  /0
 *                     ___/`---'\___
 *                   .' \\|     |// '.
 *                  / \\|||  :  |||// \
 *                 / _||||| -:- |||||- \
 *                |   | \\\  - /// |   |
 *                | \_|  ''\---/''  |_/ |
 *                \  .-\__  '-'  ___/-. /
 *              ___'. .'  /--.--\  `. .'___
 *           ."" '<  `.___\_<|>_/___.' >' "".
 *          | | :  `- \`.;`\ _ /`;.`/ - ` : | |
 *          \  \ `_.   \_ __\ /__ _/   .-` /  /
 *      =====`-.____`.___ \_____/___.-`___.-'=====
 *                        `=---='
 *
 *
 *      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 *
 *            佛祖保佑     永不宕机     永无BUG
 *
 *        佛曰:
 *                写字楼里写字间，写字间里程序员；
 *                程序人员写程序，又拿程序换酒钱。
 *                酒醒只在网上坐，酒醉还来网下眠；
 *                酒醉酒醒日复日，网上网下年复年。
 *                但愿老死电脑间，不愿鞠躬老板前；
 *                奔驰宝马贵者趣，公交自行程序员。
 *                别人笑我忒疯癫，我笑自己命太贱；
 *                不见满街漂亮妹，哪个归得程序员？
 */

export const chunkArray = (array, chunkSize) => {
  return Array.from({ length: Math.ceil(array.length / chunkSize) }, (_, index) =>
    array.slice(index * chunkSize, (index + 1) * chunkSize)
  )
}

/**
 * ctrl + window + T
 * @description: 格式化日期函数
 * @param {Date} date - 需要格式化的日期对象
 * @param {string} format  日期格式化字符串，支持以下占位符： 如'yyyy-MM-DD HH:mm:ss'
 *   - y+: 年份(如 yyyy, yy)
 *   - M+: 月份(如 MM, M)
 *   - d+: 日期(如 dd, d)
 *   - HH: 24小时制小时(如 HH)
 *   - hh: 12小时制小时(如 hh)
 *   - m+: 分钟(如 mm, m)
 *   - s+: 秒(如 ss, s)
 *   - w: 英文星期(如 Sunday)
 *   - W: 中文星期(如 星期日)
 * @return {string} 格式化后的日期字符串
 */
export const formatDate = (date, format) => {
  // 先匹配年份格式
  if (/(y+)/.test(format)) {
    format = format.replace(RegExp.$1, date.getFullYear() + '')
    // format = format.replace(RegExp.$1, date.getFullYear() + ''.substr(4 - RegExp.$1.length))
  }

  // 定义英文和中文星期数组
  const chineseWeek = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
  const englishWeek = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']

  // 匹配星期
  if (/(w+)/.test(format)) {
    format = format.replace(RegExp.$1, englishWeek[date.getDay()])
  }
  if (/(W+)/.test(format)) {
    format = format.replace(RegExp.$1, chineseWeek[date.getDay()])
  }

  // 处理小时制
  let hours = date.getHours()
  let o = {
    'M+': date.getMonth() + 1, // 月份
    'd+': date.getDate(), // 日期
    'H+': hours, // 24小时制
    'h+': hours % 12 === 0 ? 12 : hours % 12, // 12小时制
    'm+': date.getMinutes(), // 分钟
    's+': date.getSeconds() // 秒
  }

  // 遍历处理其他部分
  for (let k in o) {
    if (new RegExp(`(${k})`).test(format)) {
      let str = o[k] + ''
      format = format.replace(
        RegExp.$1,
        RegExp.$1.length === 1 ? str : ('00' + str).substr(str.length)
      )
    }
  }
  return format
}

const date = new Date('2025/1/5 16:30:59')
console.log(formatDate(date, 'yy-MM-dd HH:mm:ss w W'))
